1. Field
The present disclosure relates generally to data processing networks and, in particular, to processing data packets in data processing networks. Still more particularly, the present disclosure relates to directing data packets to processing resources in a network data processing component for processing in a more effective manner.
2. Description of the Related Art
In data processing networks, digital data is transported between endpoints of the network for processing. For example, without limitation, the Internet and network data centers are examples of such data processing networks. The endpoints of the data processing network may include computers or other data processing devices for processing digital data in a variety of ways to perform a variety of functions. The types of processes that may be performed on or using digital data at the endpoints of a data processing network are virtually limitless.
In many data processing networks, digital data is transported on the network in the form of data packets. A data packet is a formatted unit of data that is used by computers or other data processing devices to communicate with each other via the network. Some computers and networks do not use data packets to communicate, but most currently do, including nearly all computers on the Internet. The use of data packets allows many computers or other data processing devices on a network to communicate more quickly and easily.
In addition to the processing of data packets at the endpoints of a data processing network, data packets may be processed by inline processors on the network. The inline processors may be located between the endpoints on the network. Whereas endpoints of the network may be said to use or consume data, inline processors filter or modify data on the network and send it on. Intrusion detection systems, routers, enterprise buses, and firewalls are examples, without limitation, of such inline processors.
Endpoint and inline data processing on a network may be implemented using data processing components that provide multiple independent data processing resources. The multiple independent data processing resources provided by a single data processing component of this type may be data processing units that independently read and execute program instructions. For example, the independent data processing resources on a single data processing component may be independent processors. These independent data processing resources on the data processing component may be referred to as cores. Manufacturers may integrate multiple cores onto a single integrated circuit die or onto multiple dies in a single chip package to form a data processing component providing multiple independent data processing resources. Multi-core processors are widely used across many applications, including, without limitation, general-purpose computing, embedded computing, networking functions, digital signal processing, and graphics.
In cases where a multi-core processor is used to process data packets, data packets to be processed by the data processing component must be directed to the individual cores for processing. Various processes and devices may be used to direct data packets for processing by individual processor cores of a multi-core processor. Such processes and devices may employ various rules for directing data packets for processing by the individual processor cores. Such rules may direct data packets for processing by the processor cores in a manner that takes advantage of the processing resources available on the multi-core processor to process the data packets quickly and efficiently. For example, without limitation, such a rule for directing data packets may specify that newly received data packets be directed to processor cores on the multi-core processor that are less busy than other processor cores on the multi-core processor. An Ethernet adaptor is one example, without limitation, of a device that may implement such rules for directing data packets for processing by individual processor cores on a multi-core processor to achieve processing efficiency.
Other rules for directing data packets for processing by individual processor cores on a multi-core processor may attempt to achieve other types of processing efficiency. For example, to improve energy efficiency, a certain number of active processor cores on the multi-core processor may be turned off while a number of inactive processor cores on the multi-core processor are turned on. Data packet processing then may be shifted from the processor cores that are turned off to other processor cores on the multi-core processor that remain or are turned on. Individual processor cores will heat up while processing data packets. Hotter cores use more energy for processing than cooler cores. Therefore, shifting data processing from hotter active cores to cooler inactive cores can potentially reduce overall energy consumption by the multi-core processor. However, improvement of such methods to better optimize the efficiencies that may be achieved is desirable.
Wire-speed processing refers to the processing of data packets by a data processing component at a processing speed to achieve throughput that matches or approaches the hypothetical peak physical layer net data rate of the communications media carrying the data packets in a network. For example, without limitation, the communications media carrying the data packets in a network may be copper wires, fiber-optic cables, wireless media, or other media or combinations of media for carrying data packets in the network. Long delays in the processing of data packets cannot be tolerated in a wire-speed processing environment.
Accordingly, it would be advantageous to have a method and apparatus that takes into account one or more of the issues discussed above, as well as possibly other issues.